queue_multicall0(__HYPERVISOR_fpu_taskswitch);
}
- if ( next->esp0 != 0 )
- {
- queue_multicall2(__HYPERVISOR_stack_switch, __KERNEL_DS, next->esp0);
- /* Next call will silently fail if we are a non-privileged guest OS. */
- queue_multicall2(__HYPERVISOR_set_priv_levels,
- ((((struct pt_regs *)next->esp0)-1)->eflags>>12)&3,
- next->hypercall_pl);
- }
+ queue_multicall2(__HYPERVISOR_stack_switch, __KERNEL_DS, next->esp0);
+ /* Next call will silently fail if we are a non-privileged guest OS. */
+ queue_multicall2(__HYPERVISOR_set_priv_levels,
+ ((((struct pt_regs *)next->esp0)-1)->eflags>>12)&3,
+ next->hypercall_pl);
/* EXECUTE ALL TASK SWITCH XEN SYSCALLS AT THIS POINT. */
execute_multicall_list();
paging_init();
- /* Set privilege level gubbins. */
regs->eflags &= ~(3<<12);
if ( start_info.flags & SIF_PRIVILEGED ) {
/* We are privileged guest os - should have IO privileges. */
panic("Unable to obtain IOPL, despite being SIF_PRIVILEGED");
regs->eflags |= 1<<12;
}
- current->thread.hypercall_pl = 1;
if(start_info.flags & SIF_CONSOLE)
{
unsigned long v86flags, v86mask, saved_esp0;
};
-#define INIT_THREAD { 0, 0, 0, 0, 0, 1, {0}, 0, 0, 0, {0}, 0, 0, 0, 0, 0 }
+#define INIT_THREAD { sizeof(init_stack) + (long) &init_stack, \
+ 0, 0, 0, 0, 1, {0}, 0, 0, 0, {0}, 0, 0, 0, 0, 0 }
#define INIT_TSS { \
0,0, /* back_link, __blh */ \